// Generated from code/ch19/Cymbol.g by ANTLR 4.9.0-SNAPSHOT


import { ParseTreeListener } from "antlr4ts/tree/ParseTreeListener";

import { CompilationUnitContext } from "./CymbolParser";
import { VarDeclarationContext } from "./CymbolParser";
import { MethodDeclarationContext } from "./CymbolParser";
import { FormalParmetersContext } from "./CymbolParser";
import { BlockContext } from "./CymbolParser";
import { StructDeclarationContext } from "./CymbolParser";
import { StructMemberContext } from "./CymbolParser";
import { ClassDefinitionContext } from "./CymbolParser";
import { SuperClassContext } from "./CymbolParser";
import { ClassMemberContext } from "./CymbolParser";
import { StatementContext } from "./CymbolParser";
import { ExpressionListContext } from "./CymbolParser";
import { ExpressionContext } from "./CymbolParser";
import { AddExpressionContext } from "./CymbolParser";
import { PostfixEpressionContext } from "./CymbolParser";
import { FunctionCallContext } from "./CymbolParser";
import { FieldsCallContext } from "./CymbolParser";
import { MethodCallContext } from "./CymbolParser";
import { PrimaryContext } from "./CymbolParser";
import { TypeContext } from "./CymbolParser";


/**
 * This interface defines a complete listener for a parse tree produced by
 * `CymbolParser`.
 */
export interface CymbolListener extends ParseTreeListener {
	/**
	 * Enter a parse tree produced by `CymbolParser.compilationUnit`.
	 * @param ctx the parse tree
	 */
	enterCompilationUnit?: (ctx: CompilationUnitContext) => void;
	/**
	 * Exit a parse tree produced by `CymbolParser.compilationUnit`.
	 * @param ctx the parse tree
	 */
	exitCompilationUnit?: (ctx: CompilationUnitContext) => void;

	/**
	 * Enter a parse tree produced by `CymbolParser.varDeclaration`.
	 * @param ctx the parse tree
	 */
	enterVarDeclaration?: (ctx: VarDeclarationContext) => void;
	/**
	 * Exit a parse tree produced by `CymbolParser.varDeclaration`.
	 * @param ctx the parse tree
	 */
	exitVarDeclaration?: (ctx: VarDeclarationContext) => void;

	/**
	 * Enter a parse tree produced by `CymbolParser.methodDeclaration`.
	 * @param ctx the parse tree
	 */
	enterMethodDeclaration?: (ctx: MethodDeclarationContext) => void;
	/**
	 * Exit a parse tree produced by `CymbolParser.methodDeclaration`.
	 * @param ctx the parse tree
	 */
	exitMethodDeclaration?: (ctx: MethodDeclarationContext) => void;

	/**
	 * Enter a parse tree produced by `CymbolParser.formalParmeters`.
	 * @param ctx the parse tree
	 */
	enterFormalParmeters?: (ctx: FormalParmetersContext) => void;
	/**
	 * Exit a parse tree produced by `CymbolParser.formalParmeters`.
	 * @param ctx the parse tree
	 */
	exitFormalParmeters?: (ctx: FormalParmetersContext) => void;

	/**
	 * Enter a parse tree produced by `CymbolParser.block`.
	 * @param ctx the parse tree
	 */
	enterBlock?: (ctx: BlockContext) => void;
	/**
	 * Exit a parse tree produced by `CymbolParser.block`.
	 * @param ctx the parse tree
	 */
	exitBlock?: (ctx: BlockContext) => void;

	/**
	 * Enter a parse tree produced by `CymbolParser.structDeclaration`.
	 * @param ctx the parse tree
	 */
	enterStructDeclaration?: (ctx: StructDeclarationContext) => void;
	/**
	 * Exit a parse tree produced by `CymbolParser.structDeclaration`.
	 * @param ctx the parse tree
	 */
	exitStructDeclaration?: (ctx: StructDeclarationContext) => void;

	/**
	 * Enter a parse tree produced by `CymbolParser.structMember`.
	 * @param ctx the parse tree
	 */
	enterStructMember?: (ctx: StructMemberContext) => void;
	/**
	 * Exit a parse tree produced by `CymbolParser.structMember`.
	 * @param ctx the parse tree
	 */
	exitStructMember?: (ctx: StructMemberContext) => void;

	/**
	 * Enter a parse tree produced by `CymbolParser.classDefinition`.
	 * @param ctx the parse tree
	 */
	enterClassDefinition?: (ctx: ClassDefinitionContext) => void;
	/**
	 * Exit a parse tree produced by `CymbolParser.classDefinition`.
	 * @param ctx the parse tree
	 */
	exitClassDefinition?: (ctx: ClassDefinitionContext) => void;

	/**
	 * Enter a parse tree produced by `CymbolParser.superClass`.
	 * @param ctx the parse tree
	 */
	enterSuperClass?: (ctx: SuperClassContext) => void;
	/**
	 * Exit a parse tree produced by `CymbolParser.superClass`.
	 * @param ctx the parse tree
	 */
	exitSuperClass?: (ctx: SuperClassContext) => void;

	/**
	 * Enter a parse tree produced by `CymbolParser.classMember`.
	 * @param ctx the parse tree
	 */
	enterClassMember?: (ctx: ClassMemberContext) => void;
	/**
	 * Exit a parse tree produced by `CymbolParser.classMember`.
	 * @param ctx the parse tree
	 */
	exitClassMember?: (ctx: ClassMemberContext) => void;

	/**
	 * Enter a parse tree produced by `CymbolParser.statement`.
	 * @param ctx the parse tree
	 */
	enterStatement?: (ctx: StatementContext) => void;
	/**
	 * Exit a parse tree produced by `CymbolParser.statement`.
	 * @param ctx the parse tree
	 */
	exitStatement?: (ctx: StatementContext) => void;

	/**
	 * Enter a parse tree produced by `CymbolParser.expressionList`.
	 * @param ctx the parse tree
	 */
	enterExpressionList?: (ctx: ExpressionListContext) => void;
	/**
	 * Exit a parse tree produced by `CymbolParser.expressionList`.
	 * @param ctx the parse tree
	 */
	exitExpressionList?: (ctx: ExpressionListContext) => void;

	/**
	 * Enter a parse tree produced by `CymbolParser.expression`.
	 * @param ctx the parse tree
	 */
	enterExpression?: (ctx: ExpressionContext) => void;
	/**
	 * Exit a parse tree produced by `CymbolParser.expression`.
	 * @param ctx the parse tree
	 */
	exitExpression?: (ctx: ExpressionContext) => void;

	/**
	 * Enter a parse tree produced by `CymbolParser.addExpression`.
	 * @param ctx the parse tree
	 */
	enterAddExpression?: (ctx: AddExpressionContext) => void;
	/**
	 * Exit a parse tree produced by `CymbolParser.addExpression`.
	 * @param ctx the parse tree
	 */
	exitAddExpression?: (ctx: AddExpressionContext) => void;

	/**
	 * Enter a parse tree produced by `CymbolParser.postfixEpression`.
	 * @param ctx the parse tree
	 */
	enterPostfixEpression?: (ctx: PostfixEpressionContext) => void;
	/**
	 * Exit a parse tree produced by `CymbolParser.postfixEpression`.
	 * @param ctx the parse tree
	 */
	exitPostfixEpression?: (ctx: PostfixEpressionContext) => void;

	/**
	 * Enter a parse tree produced by `CymbolParser.functionCall`.
	 * @param ctx the parse tree
	 */
	enterFunctionCall?: (ctx: FunctionCallContext) => void;
	/**
	 * Exit a parse tree produced by `CymbolParser.functionCall`.
	 * @param ctx the parse tree
	 */
	exitFunctionCall?: (ctx: FunctionCallContext) => void;

	/**
	 * Enter a parse tree produced by `CymbolParser.fieldsCall`.
	 * @param ctx the parse tree
	 */
	enterFieldsCall?: (ctx: FieldsCallContext) => void;
	/**
	 * Exit a parse tree produced by `CymbolParser.fieldsCall`.
	 * @param ctx the parse tree
	 */
	exitFieldsCall?: (ctx: FieldsCallContext) => void;

	/**
	 * Enter a parse tree produced by `CymbolParser.methodCall`.
	 * @param ctx the parse tree
	 */
	enterMethodCall?: (ctx: MethodCallContext) => void;
	/**
	 * Exit a parse tree produced by `CymbolParser.methodCall`.
	 * @param ctx the parse tree
	 */
	exitMethodCall?: (ctx: MethodCallContext) => void;

	/**
	 * Enter a parse tree produced by `CymbolParser.primary`.
	 * @param ctx the parse tree
	 */
	enterPrimary?: (ctx: PrimaryContext) => void;
	/**
	 * Exit a parse tree produced by `CymbolParser.primary`.
	 * @param ctx the parse tree
	 */
	exitPrimary?: (ctx: PrimaryContext) => void;

	/**
	 * Enter a parse tree produced by `CymbolParser.type`.
	 * @param ctx the parse tree
	 */
	enterType?: (ctx: TypeContext) => void;
	/**
	 * Exit a parse tree produced by `CymbolParser.type`.
	 * @param ctx the parse tree
	 */
	exitType?: (ctx: TypeContext) => void;
}

